【新機能】ALBのHost-based routingを試してみた
ご機嫌いかがでしょうか、豊崎です。
ELB(ALB)にアップデートがありましたので、ご紹介させていただきます。
ホストベースルーティング
ALB(アプリケーションロードバランサー)にホストベースルーティングの機能が追加されました。 このアップデートにより、HTTPヘッダのホストフィールドに基づいたリクエストのルーティングが可能になりました。
これまで利用可能だったパスベースのルーティングと組み合わせて使うことも可能です。 また、アプリケーションロードバランサで作成できるルールの数も75に拡大されています。
できるようになること
ホストベースのルーティングを使用することでELB(ALB)に複数のドメインを紐付けてドメインごとにバックエンドの異なるEC2またはコンテナにルーティングすることが可能になります。
試してみる
準備
webサーバを2台用意します。
- hostA
- hostB
上記EC2をターゲットとしたターゲットグループを2つ用意します。
- taegetA ターゲット>hostA
- taegetB ターゲット>hostB
接続はhttpを利用します。
ALBを作成する
AWSマネジメントコンソールからALBを作成します。
任意で設定を行わなければいけない箇所以外はデフォルトで作成します。 名前、サブネット、セキュリティグループは適宜設定してください。
現時点では作成時にホストベースのルーティング設定は行えないため、ターゲットグループには上記で作成したtargetAを指定しておきます。
ALBが作成できたら、リスナータブからルールの表示/編集をクリックします。
それではルールを追加していきましょう。 プラスアイコン>ルールの挿入の順に押します。
すると以下のようにルールを追加することができます。
今回は以下のようなルールを設定してみました。
- www1.XXXXXX.comでアクセスがあった場合、targetA(hostA)へ
- www2.XXXXXX.comでアクセスがあった場合、targetB(hostB)へ
- 上記以外でアクセスがあった場合、targetA(hostA)へ
ルールは上から順に評価されます。
DNSについてはRoute53で以下のように設定しています。
- www1.XXXXXX.com CNAME ALBのエンドポイント
- www2.XXXXXX.com CNAME ALBのエンドポイント
接続テスト
まずは www1.XXXXXX.comでアクセス
つぎに www2.XXXXXX.comでアクセス
それ以外(ALBのエンドポイント)でアクセス
ホストベースでのルーティングが行えていることが確認できました。
さいごに
今回のアップデートにより、サブドメインごとにELBを用意していた場合、ELBをまとめることができるようになり、シンプルな構成が可能になりました。また、コストの面でも有利になるかとおもいます。是非活用していきたいですね。
HTTPS/SSLの場合はSSL/TLS証明書の要件を満たす必要がありますのでご注意ください。